In order to improve reliability and performance, a server on a network may be set up with multiple IP addresses. Each IP address may correspond to a different potential route to the server. For example, each IP address may correspond to a different network service provider. Many large internet sites have multiple routes and connections to multiple network providers. One way to manage these multiple routes is to hide the routes from devices connecting to the sites. A site may determine a particular IP address to use for routing requests from a given subnet, but hide all other IP addresses from that subnet.
However, this approach suffers from the drawback that any routing control is necessarily coarse. If a server begins using a different IP address for an entire subnet, large numbers of existing connections and clients may be affected. Thus there exists a need to leverage multiple IP addresses and routes to provide optimal connections to clients on a per-client basis.